import js from '@eslint/js'
import vueParser from 'vue-eslint-parser'
import globals from 'globals'
import prettier from 'eslint-config-prettier'
import tsParser from '@typescript-eslint/parser'
import tsPlugin from '@typescript-eslint/eslint-plugin'

export default [
    js.configs.recommended,
    {
        // TypeScript 支持
        files: ['**/*.ts'],
        languageOptions: {
            parser: tsParser,
            parserOptions: {
                ecmaVersion: 'latest',
                sourceType: 'module',
            },
            globals: {
                ...globals.browser,
            },
        },
        plugins: {
            '@typescript-eslint': tsPlugin,
        },
        rules: {
            '@typescript-eslint/no-unused-vars': [
                'warn',
                {
                    argsIgnorePattern: '^_', // 忽略以 _ 开头的参数
                    varsIgnorePattern: '^_', // 可选：忽略以 _ 开头的变量
                },
            ],
            // '@typescript-eslint/no-explicit-any': 'warn',
        },
    },
    {
        // Vue 支持
        files: ['**/*.vue'],
        languageOptions: {
            parser: vueParser,
            parserOptions: {
                ecmaVersion: 'latest',
                sourceType: 'module',
                parser: tsParser, // 添加 TypeScript 解析器
            },
            globals: {
                ...globals.browser,
                ...globals.node,
            },
        },
        rules: {
            'vue/multi-word-component-names': 'off',
            'vue/html-self-closing': [
                'error',
                {
                    html: {
                        void: 'always',
                        normal: 'never',
                        component: 'always',
                    },
                },
            ],
        },
    },
    {
        // 通用规则
        rules: {
            'no-unused-vars': 'off', // 禁用基础规则，使用 @typescript-eslint 版本
            'no-console': 'warn',
            eqeqeq: 'error',
            semi: ['error', 'never'],
        },
    },
    {
        ignores: ['dist/**', 'node_modules/**', '**/*.min.js'],
    },
    prettier,
]
